home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / macros.arc / MOVDAT.ASM < prev    next >
Encoding:
Assembly Source File  |  1983-11-17  |  5.0 KB  |  64 lines

  1.  
  2. *                                                                               
  3. *MOVE L(CONST) WORDS FROM A(ROM ITEM)                                           
  4. *TO B(RAM VAR)                                                                  
  5. *ROM ITEM IS:                                                                   
  6. *                                                                               
  7. MOVDAT $MACRO  A,B,L                                                            
  8.        $VAR ST                                                                  
  9.        $ASG '*' TO ST.S                                                         
  10.        $IF  B.L=0                                                               
  11.        ACTAR AR1                                                                
  12.        $ASG '*' TO B.S                                                          
  13.        $ENDIF                                                                   
  14.        $IF  L.V<3        ONE OR TWO WORDS                                       
  15.        $IF  A.SV=ST.SV   A = *                                                  
  16.        ARTAC AR0                                                                
  17.        $ELSE                                                                    
  18.        $IF  A.L#=0       A = PROGRAM ADDRESS                                    
  19.        LCAC :A:                                                                 
  20.        $ENDIF                                                                   
  21.        $ENDIF                                                                   
  22.        $IF  B.SV=ST.SV                                                          
  23.        LARP 1                                                                   
  24.        TBLR *+           READ FIRST WORD                                        
  25.        $ELSE                                                                    
  26.        TBLR :B:                                                                 
  27.        $ENDIF                                                                   
  28.        $IF  L.V=2        TWO WORDS                                              
  29.        ADD  ONE,0        INCREMENT POINTER                                      
  30.        $IF  B.SV=ST.SV                                                          
  31.        TBLR *+           READ NEXT WORD                                         
  32.        $ELSE                                                                    
  33.        TBLR :B:+1                                                               
  34.        $ENDIF                                                                   
  35.        $ENDIF                                                                   
  36.        $ENDIF                                                                   
  37.        $IF  L.V>2                                                               
  38.        $IF  A.L=0                                                               
  39.        ACTAR AR0                                                                
  40.        $ASG '*' TO A.S                                                          
  41.        $ENDIF                                                                   
  42.        $IF  B.SV=ST.SV                                                          
  43.        $IF  A.SV#=ST.SV                                                         
  44.        CALL MOVC$A       MOVE                                                   
  45.        REF  MOVC$A                                                              
  46.        DATA :A:          FROM :A:                                               
  47.        $ELSE                                                                    
  48.        CALL MOVC$$       MOVE                                                   
  49.        REF  MOVC$$                                                              
  50.        $ENDIF                                                                   
  51.        $ELSE                                                                    
  52.        $IF  A.SV#=ST.SV                                                         
  53.        CALL MOVA$B       MOVE                                                   
  54.        REF  MOVA$B                                                              
  55.        DATA :A:          FROM :A:                                               
  56.        $ELSE                                                                    
  57.        CALL MOVC$B       MOVE                                                   
  58.        REF  MOVC$B                                                              
  59.        $ENDIF                                                                   
  60.        DATA :B:          TO :B:                                                 
  61.        $ENDIF                                                                   
  62.        DATA :L:          FOR :L: WORDS                                          
  63.        $ENDIF                                                                   
  64.        $END